VMX guest memory calculation in python code is corrupted by changeset
authoremellor@ewan <emellor@ewan>
Thu, 22 Sep 2005 10:21:37 +0000 (11:21 +0100)
committeremellor@ewan <emellor@ewan>
Thu, 22 Sep 2005 10:21:37 +0000 (11:21 +0100)
6984, this patch fixes it.

Also print vmx builder parameters before calling vmx builer, just like
what's done before calling linux builder.

With this patch, qemu dm using SDL can work, however qemu dm using VNC
still has bug, we will fix it soon.

Signed-off-by: Xin Li <xin.b.li@intel.com>
tools/python/xen/xend/image.py

index 0ef34573265b87a8fdae08b7a3214d6a8226b552..dfea90882745c1357133e00a604915e9fe8281f3 100644 (file)
@@ -300,6 +300,18 @@ class VmxImageHandler(ImageHandler):
             store_evtchn = self.vm.store_channel.port2
         else:
             store_evtchn = 0
+
+        log.debug("dom            = %d", self.vm.getDomain())
+        log.debug("image          = %s", self.kernel)
+        log.debug("control_evtchn = %d", self.device_channel.port2)
+        log.debug("store_evtchn   = %d", store_evtchn)
+        log.debug("memsize        = %d", self.vm.getMemoryTarget() / 1024)
+        log.debug("memmap         = %s", self.memmap_value)
+        log.debug("cmdline        = %s", self.cmdline)
+        log.debug("ramdisk        = %s", self.ramdisk)
+        log.debug("flags          = %d", self.flags)
+        log.debug("vcpus          = %d", self.vm.getVCpuCount())
+
         ret = xc.vmx_build(dom            = self.vm.getDomain(),
                            image          = self.kernel,
                            control_evtchn = self.device_channel.port2,
@@ -402,7 +414,7 @@ class VmxImageHandler(ImageHandler):
             args = args + vnc
         args = args + ([ "-d",  "%d" % self.vm.getDomain(),
                   "-p", "%d" % self.device_channel.port1,
-                  "-m", "%s" % self.vm.getMemoryTarget() / 1024 ])
+                  "-m", "%s" % (self.vm.getMemoryTarget() / 1024)])
         args = args + self.dmargs
         env = dict(os.environ)
         env['DISPLAY'] = self.display
@@ -437,7 +449,7 @@ class VmxImageHandler(ImageHandler):
         """@see ImageHandler.getDomainMemory"""
         # for ioreq_t and xenstore
         static_pages = 2
-        return mem + self.getPageTableSize(mem * 1024) + 4 * static_pages
+        return mem + self.getPageTableSize(mem / 1024) + 4 * static_pages
             
     def getPageTableSize(self, mem_mb):
         """Return the size of memory needed for 1:1 page tables for physical